// 编写一个算法来判断一个数 n 是不是快乐数。

// 「快乐数」定义为：

// 对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和。
// 然后重复这个过程直到这个数变为 1，也可能是 无限循环 但始终变不到 1。
// 如果 可以变为  1，那么这个数就是快乐数。
// 如果 n 是快乐数就返回 true ；不是，则返回 false 。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/happy-number
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

// 执行用时：
// 0 ms
// , 在所有 C++ 提交中击败了
// 100.00%
// 的用户   
// 内存消耗：
// 6.1 MB
// , 在所有 C++ 提交中击败了
// 52.56%
// 的用户

#include<vector>
#include<string>
#include<set>
#include<bits/stdc++.h>
using namespace std;


class Solution {
public:
    bool isHappy(int n) {
        vector<int> nums;
        string s = to_string(n);
        nums.push_back(n);
        while(s != "1"){
            int temp = 0;
            for(int i =0;i<s.size();i++){
                temp = temp +pow((s[i]-'0'),2);
            }
            auto iter = find(nums.begin(),nums.end(),temp);
            if(iter != nums.end()){
                return false;
            }
            nums.push_back(temp);
            s = to_string(temp);
            cout<<s<<endl;
        }
        return true;
    }
};